//package org.WeekCompetition;
//
//import org.jikeshijian.Solution;
//
//import java.util.*;
//
//public class Solution4 {
//	public int[] findGCDPairs(int[] nums, int[] queries) {
//		// 使用HashSet避免重复计算
//		Set<Integer> uniqueGCDs = new HashSet<>();
//		Map<Integer, Integer> gcdIndex = new TreeMap<>(); // TreeMap保持排序
//		int index = 0;
//
//		for (int i = 0; i < nums.length; i++) {
//			for (int j = i + 1; j < nums.length; j++) {
//				int gcd = gcd(nums[i], nums[j]);
//				if (!uniqueGCDs.contains(gcd)) {
//					uniqueGCDs.add(gcd);
//					gcdIndex.put(gcd, index++);
//				}
//			}
//		}
//
//		int[] answer = new int[queries.length];
//		for (int i = 0; i < queries.length; i++) {
//			int query = queries[i];
//			// 使用TreeMap的ceilingKey方法找到不小于给定键的第一个键
//			Integer key = gcdIndex.ceilingKey(query);
//			if (key != null) {
//				answer[i] = key;
//			} else {
//				// 如果查询大于所有GCD值，返回null或者错误处理
//				answer[i] = gcdIndex.firstKey(); // 或者根据实际情况进行错误处理
//			}
//		}
//
//		return answer;
//	}
//
//	// 计算两个数的最大公约数
//	private int gcd(int a, int b) {
//		while (b != 0) {
//			int temp = b;
//			b = a % b;
//			a = temp;
//		}
//		return a;
//	}
//
//	public static void main(String[] args) {
//		Solution solution = new Solution();
//
//		// 示例1
//		int[] nums1 = {2, 3, 4};
//		int[] queries1 = {0, 2, 2};
//		int[] output1 = solution.findGCDPairs(nums1, queries1);
//		System.out.println(Arrays.toString(output1)); // [1, 2, 2]
//
//		// 示例2
//		int[] nums2 = {4, 4, 2, 1};
//		int[] queries2 = {5, 3, 1, 0};
//		int[] output2 = solution.findGCDPairs(nums2, queries2);
//		System.out.println(Arrays.toString(output2)); // [4, 2, 1, 1]
//	}
//}